[JAVA] SWING GUI 일괄 커스터마이징 하는법 :: AWT스윙GUI[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

AWT스윙GUI
[1]
등록일:2008-03-10 10:23:38 (0%)
작성자:
제목:[JAVA] SWING GUI 일괄 커스터마이징 하는법
 

 

 

디렉토리 대소문자가 몽땅 바뀌어 버리던 날, 코딩이 너무나 안 되어서 나는  아무 소스들을 뒤적뒤적하면서 이것저것 실행해보고 있었다. 그러다가 JDK 디렉토리에 들어있는 샘플 예제들을 하나씩 실행해 보기 시작했는데 재미있는 것들이 너무 많았다. 스윙 예제를 비롯하여 신디사이저도 들어있고 2D, 3D 그래픽 예제도 있었다. 그 중 C:\jdk\demo\jfc\Metalworks 디렉토리에 보니까 GUI를 커스터마이징 할 수 있게 해 주는 소스가 몇 개 보였다. 어렵지 않게 바꿀 수 있었다.

 

자바로 프로그램을 만들 때 시각 장애인을 위해서 폰트 크기를 크게 한다든지, 색맹여부에 따라서 색상을 조정한다든지 하는 작업이 필요하다면 유용하게 쓰일 수 있을 것 같다.

 

설정하기에 따라서 애플리케이션의 모든 GUI가 일괄적으로 바뀌게 하려면 다음과 같은 방법을 사용한다. 코드 안에 폰트나 색상과 관련된 부분들을 넣기 시작하면 애플리케이션 기능이 많아지고 코드가 늘어남에 따라 절대! 수정하기가 어려워진다. UI 템플릿을 만들어서 관리해주는 편이 편하게 관리하기 쉽다.

 

 

소스를 보고 테스트로 한번 만들어봤는데 같잖게 공주 같은 템플릿을 만들어버렸다.
JXTA CMS를 써서 간단한 파일 공유 시스템을 테스트해보고 있었는데  한번 템플릿을 씌워봤다. ㅋㅋ

 

 

 
 
 
 
 
 
이것을 만드는 소스는 클래스를 하나 만들어주고 메인 함수 같은데서 UI 등록을 해 주면 된다.
 
1) 등록하는 부분
 
JDialog.setDefaultLookAndFeelDecorated(true);
  JFrame.setDefaultLookAndFeelDecorated(true);
  Toolkit.getDefaultToolkit().setDynamicLayout(true);
  System.setProperty("sun.awt.noerasebackground", "true");
  MetalTheme myTheme = null;
  MetalTheme[] themes = { new DefaultMetalTheme(), new KaonTheme()};
  MetalTheme selectedTheme = themes[Integer.parseInt("1")];
  MetalLookAndFeel.setCurrentTheme(selectedTheme);
  try {
   UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
  } catch (Exception ex) {
   System.out.println("Failed loading Metal");
   System.out.println(ex);
  }
 
 
2) 커스터마이징 하는 부분
 
 public class KaonTheme extends DefaultMetalTheme {
  public String getName() {
   return "kaon";
  }
  private final ColorUIResource primary1 =
   new ColorUIResource(255, 217, 235); //테두리나 폴더 꼭지
  private final ColorUIResource primary2 =
   new ColorUIResource(255, 149, 200); //테두리 및 스크롤바 색
  private final ColorUIResource primary3 =
   new ColorUIResource(255, 232, 242); //타이틀 바의 색, 다이얼로그 박스의 폴더 색
  private final ColorUIResource secondary1 =
   new ColorUIResource(255, 217, 235); //제일 바깥쪽 텍두리 버튼테두리, 프레임 테두리
  private final ColorUIResource secondary2 =
   new ColorUIResource(253, 210, 253); //버튼 눌렀을 때나 선택 안된 탭 색깔
  private final ColorUIResource secondary3 =
   new ColorUIResource(253, 210, 253);//버튼 누르기 전이나 선택 된 탭 색깔
  protected ColorUIResource getPrimary1() {
   return primary1;
  }
  protected ColorUIResource getPrimary2() {
   return primary2;
  }
  protected ColorUIResource getPrimary3() {
   return primary3;
  }
  protected ColorUIResource getSecondary1() {
   return secondary1;
  }
  protected ColorUIResource getSecondary2() {
   return secondary2;
  }
  protected ColorUIResource getSecondary3() {
   return secondary3;
  }
  
 }
[본문링크] [JAVA] SWING GUI 일괄 커스터마이징 하는법
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=2449
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.